package com.huellas.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;

import javax.swing.JOptionPane;

import com.huellas.excepcion.DAOExcepcion;
import com.huellas.bean.ActividadBean;
import com.huellas.bean.Comprobante;
import com.huellas.bean.EstadoClienteBean;
import com.huellas.bean.EsterilizadoBean;
import com.huellas.bean.MantePaciente;
import com.huellas.bean.PacienteBean;
import com.huellas.bean.RazaBean;
import com.huellas.bean.TamanoBean;
import com.huellas.bean.TipoSangreBean;
import com.huellas.util.ConexionBD;
import com.huellas.util.MysqlHelper;

public class PacienteDAO extends BaseDAO{

	public String  MantenimientoPaciente(MantePaciente objComp, String Opc ){
		String MSJ ="";
//		JOptionPane.showMessageDialog(null, objComp.getCoPaciente());
//		JOptionPane.showMessageDialog(null, objComp.getNoPaciente());
//		JOptionPane.showMessageDialog(null, objComp.getPeso());
//		JOptionPane.showMessageDialog(null, objComp.getFeNacimiento());
//		JOptionPane.showMessageDialog(null, objComp.getGenero());
//		JOptionPane.showMessageDialog(null, objComp.getFlgBuscaParejas());
//		JOptionPane.showMessageDialog(null, objComp.getTamano());
//		JOptionPane.showMessageDialog(null, objComp.getEstirilizado());
//		JOptionPane.showMessageDialog(null, objComp.getTipo());
//		JOptionPane.showMessageDialog(null, objComp.getRaza());
//		JOptionPane.showMessageDialog(null, objComp.getCodUsuario());
//		JOptionPane.showMessageDialog(null, Opc);
		
		try{
			ResultSet query=null;
			MysqlHelper objDatos = new MysqlHelper();
			
			query= objDatos.Listar("{call SP_Mant_Paciente(?,?,?,?,?,?,?,?,?,?,?,?,?)}", 
					new Object[]{objComp.getCoPaciente(),objComp.getNoPaciente(),objComp.getPeso(),
						objComp.getFeNacimiento(),objComp.getGenero(),objComp.getFlgBuscaParejas(),objComp.getTamano(),
						objComp.getEstirilizado(), objComp.getTipo(),objComp.getActividad(),objComp.getRaza(),objComp.getCodUsuario(),Opc});
			
			while(query.next()){
				MSJ = query.getString("MSJx");
			}

			
		}catch (Exception e){
			JOptionPane.showMessageDialog(null, e.getMessage());
		}
		return MSJ;
	}
	
	/*
	public Collection<PacienteBean> ListaPacientes(String cadena){
		Collection<PacienteBean> listapacientes = new ArrayList<PacienteBean>();
		try{
			MysqlHelper objDatos = new MysqlHelper();
			ResultSet Tabla;
			Tabla = objDatos.Listar("{call SP_Busqueda_MAscota(?)}", new Object[]{cadena});
			
			while (Tabla.next()) {
				
				PacienteBean d = new PacienteBean();
				d.setCoPaciente(Tabla.getInt("CoPaciente"));
				d.setNoPaciente(Tabla.getString("NoPaciente"));
				d.setPeso(Tabla.getDouble("Peso"));
				d.setFeNacimiento(Tabla.getString("FeNacimiento"));
				d.setGenero(Tabla.getString("Genero"));
				d.setFlgBuscaParejas(Tabla.getInt("FlgBuscaParejas"));
				d.setTamano(Tabla.getInt("tamano_CoTamano"));
				d.setEstirilizado(Tabla.getInt("esterilizado_CoEsterilizado"));
				d.setTipo(Tabla.getInt("TipoSangre_CoTipoSangre"));
				d.setActividad(Tabla.getInt("actividad_CoActividad"));
				d.setRaza(Tabla.getInt("raza_CoRaza"));
				d.setCodUsuario(Tabla.getInt("cliente_usuario_CoUsuario"));
				listapacientes.add(d);
				
			}
		}catch(Exception e){
			JOptionPane.showMessageDialog(null,e.getMessage());
		}
		
		return listapacientes;
	}*/
	
	public Collection<MantePaciente> ListaPacientes(int code_paciente, String opc){
		Collection<MantePaciente> listapacientes = new ArrayList<MantePaciente>();
		try{
			MysqlHelper objDatos = new MysqlHelper();
			ResultSet Tabla;
			Tabla = objDatos.Listar("{call SP_Lista_Paciente(?,?)}", new Object[]{code_paciente,opc});
			
			while (Tabla.next()) {
				
				MantePaciente d = new MantePaciente();
				d.setCoPaciente(Tabla.getInt("CoPaciente"));
				d.setNoPaciente(Tabla.getString("NoPaciente"));
				d.setPeso(Tabla.getDouble("Peso"));
				d.setFeNacimiento(Tabla.getString("FeNacimiento"));
				d.setGenero(Tabla.getString("Genero"));
				d.setFlgBuscaParejas(Tabla.getInt("FlgBuscaParejas"));
				d.setTamano(Tabla.getInt("Code_Tamano"));
				d.setEstirilizado(Tabla.getInt("esterilizado_CoEsterilizado"));
				d.setTipo(Tabla.getInt("TipoSangre"));
				d.setActividad(Tabla.getInt("Cod_Actividad"));
				d.setRaza(Tabla.getInt("CodRaza"));
				d.setCodUsuario(Tabla.getInt("cod_Usuario"));
				d.setNombre_actividad(Tabla.getString("NoActividad"));
				d.setNombre_Cliente(Tabla.getString("Cliente"));
				d.setNombre_esterilizado(Tabla.getString("NoEsterilizado"));
				if(Tabla.getInt("FlgBuscaParejas")== 1 ){
					d.setNombre_Flag(("SI"));
				}else {
					d.setNombre_Flag(("NO"));
				}
				d.setNoPaciente(Tabla.getString("NoPaciente"));
				d.setNombre_Genero(Tabla.getString("Genero"));
				d.setNombre_raza(Tabla.getString("nombreRaza"));
				d.setNombre_tamano(Tabla.getString("Tamanio"));
				d.setNombre_tipo(Tabla.getString("NoTipoSangre"));
				d.setNombre_Cliente(Tabla.getString("Cliente"));
				listapacientes.add(d);
				
			}
		}catch(Exception e){
			JOptionPane.showMessageDialog(null,e.getMessage());
		}
		
		return listapacientes;
	}
	
	//Metodo para obtener el codigo del paciente
		public int obtenerCoPaciente(String NoPaciente, int CoCliente) throws DAOExcepcion{
			int coPaciente = 0;
			
			Connection connection = null;
			PreparedStatement preparedStatement = null;
			ResultSet resultSet = null;
			
			try{
				String query = "select p.CoPaciente from Paciente p, Cliente c where p.NoPaciente=? and p.CoCliente=? and p.CoCliente=c.CoCliente";
				connection = ConexionBD.obtenerConexion();
				preparedStatement = connection.prepareStatement(query);
				preparedStatement.setString(1, NoPaciente);
				preparedStatement.setInt(2, CoCliente);
				resultSet = preparedStatement.executeQuery();
				
				if(resultSet.next()){
					coPaciente = resultSet.getInt(1);
				}
			}catch(SQLException e){
				System.err.println(e.getMessage());
				throw new DAOExcepcion(e.getMessage());
			}finally {
				this.cerrarResultSet(resultSet);
				this.cerrarStatement(preparedStatement);
				this.cerrarConexion(connection);
			}
			
			return coPaciente;
		}
	
}
